package com.shuorikeji.huohuo.http;

import com.google.gson.JsonObject;
import com.shuorikeji.huohuo.bean.NetImgMainBean;

import java.util.Map;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
import retrofit2.http.QueryMap;
import rx.Observable;

public interface APIService {
    /**
     * 登录接口
     *
     * @param params 参数
     * @return 数据源
     */
    @POST(ApiUrl.GET_LOGIN)
    Observable<JsonObject> login(@QueryMap Map<String, Object> params);

    /**
     * 获取二级分类
     *
     * @return 数据源
     */
    @POST(ApiUrl.GET_SEC_FL)
    Observable<JsonObject> getSecFl(@QueryMap Map<String, Object> params);

    /**
     * 获取推荐位小说
     *
     * @param params 参数
     * @return 数据源
     */
    @POST(ApiUrl.GET_TJ_BOOK)
    Observable<JsonObject> getTjBook(@QueryMap Map<String, Object> params);

    /**
     * 获取所有书籍
     *
     * @return 数据源
     */
    @POST(ApiUrl.GET_ALL_BOOK)
    Observable<JsonObject> getAllBook(@QueryMap Map<String, Object> params);

    /**
     * 猜你喜欢
     *
     * @param params 参数
     * @return 数据源
     */
    @POST(ApiUrl.C_YOU_LIKE)
    Observable<JsonObject> cYouLike(@QueryMap Map<String, Object> params);

    /**
     * 获取热门标签列表
     *
     * @return 数据源
     */
    @POST(ApiUrl.GET_HOT_TAG)
    Observable<JsonObject> getHotTag();

    @POST(ApiUrl.GET_USER_INFO)
    Observable<JsonObject> getUserInfo();

    /**
     * 获取小说评论列表
     *
     * @return 数据源
     */
    @POST(ApiUrl.GET_BOOK_PL)
    Observable<JsonObject> getBookPl(@QueryMap Map<String, Object> params);

    /**
     * 获取小说详情
     *
     * @return 数据源
     */
    @POST(ApiUrl.GET_BOOK_DETAIL)
    Observable<JsonObject> getBookDetail(@QueryMap Map<String, Object> params);

    /**
     * 添加书架
     *
     * @return 数据源
     */
    @POST(ApiUrl.ADD_SJ)
    Observable<JsonObject> addSj(@QueryMap Map<String, Object> params);

    /**
     * 获取章节列表
     *
     * @return 数据源
     */
    @POST(ApiUrl.GET_BOOK_ZJ)
    Observable<JsonObject> getBookZj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_FONT_BG)
    Observable<JsonObject> getFontBg();

    @POST(ApiUrl.SET_READ_BG)
    Observable<JsonObject> setReadBg(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.SET_FONT)
    Observable<JsonObject> setFont(@QueryMap Map<String, Object> params);

    /**
     * 获取章节详情
     *
     * @return 数据源
     */
    @POST(ApiUrl.GET_BOOK_ZJ_DETAIL)
    Observable<JsonObject> getBookZjDetail(@QueryMap Map<String, Object> params);

    /**
     * 添加阅读记录
     *
     * @return 数据源
     */
    @POST(ApiUrl.ADD_READ_HIS)
    Observable<JsonObject> addReadHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.JB_BOOK_ZJ)
    Observable<JsonObject> jbBookZj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_ALL_SORT)
    Observable<JsonObject> getAllSort();

    /**
     * 添加评价
     *
     * @return 数据源
     */
    @POST(ApiUrl.PL_BOOK)
    Observable<JsonObject> plBook(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_MH_1_FL)
    Observable<JsonObject> getMh1Fl();

    @POST(ApiUrl.GET_All_MH)
    Observable<JsonObject> getAllMh(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_JX_MH)
    Observable<JsonObject> getJxMh(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MH_SEARCH_HISTORY)
    Observable<JsonObject> mhSearchHistory();

    @POST(ApiUrl.BOOK_SEARCH_HISTORY)
    Observable<JsonObject> bookSearchHistory();

    @POST(ApiUrl.DELETE_BOOK_SEARCH_HISTORY)
    Observable<JsonObject> deleteBookSearHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DELETE_MH_SEARCH_HISTORY)
    Observable<JsonObject> deleteMhSearHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MH_HOT_SEARCH)
    Observable<JsonObject> mhHotSearch();

    @POST(ApiUrl.BOOK_HOT_SEARCH)
    Observable<JsonObject> bookHotSearch();

    @POST(ApiUrl.GET_MH_DETAIL)
    Observable<JsonObject> getMhDetail(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_MH_ZJ_LIST)
    Observable<JsonObject> getMhZjList(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_MH_PL_LIST)
    Observable<JsonObject> getMhPlList(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_MH_ZJ_DETAIL)
    Observable<JsonObject> getMhZjDetail(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ADD_MH_PL)
    Observable<JsonObject> addMhPl(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DJ_TYPE_TREE)
    Observable<JsonObject> djTypeTree();

    @POST(ApiUrl.DJ_LIST)
    Observable<JsonObject> djList(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DJ_DETAIL)
    Observable<JsonObject> djDetail(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DJ_DZ)
    Observable<JsonObject> djDz(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.BOOK_SJ_LIST)
    Observable<JsonObject> bookSjList(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MH_SJ_LIST)
    Observable<JsonObject> mhSjList(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ADD_MH_SJ)
    Observable<JsonObject> addMhSj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DELETE_MH_SJ)
    Observable<JsonObject> deleteMhSj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ADD_DELETE_ZJ)
    Observable<JsonObject> addDeleteZj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ZJ_JL_LIST)
    Observable<JsonObject> zjJlList(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.BOOK_READ_HIS)
    Observable<JsonObject> bookReadHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.COMMON_TASK)
    Observable<JsonObject> commonTask();

    @POST(ApiUrl.GET_ALL_READ_SEE_VIDEO_COUNT)
    Observable<JsonObject> getAllReadSeeVideoCount();

    @POST(ApiUrl.GET_MH_READ_HIS)
    Observable<JsonObject> mhReadHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ADD_MH_READ_HIS)
    Observable<JsonObject> addMhReadHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.PL_ADD_BOOK_SJ)
    Observable<JsonObject> plAddBookSj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.PL_DELETE_BOOK_HIS)
    Observable<JsonObject> plDeleteBookHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.PL_DELETE_MH_HIS)
    Observable<JsonObject> plDeleteMhHis(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DJ_SEE_JL)
    Observable<JsonObject> djSeeJl(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DJ_SEE_JL_LIST)
    Observable<JsonObject> djSeeJlList(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.PL_DEL_DJ_JL)
    Observable<JsonObject> plDelDjJl(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.SEE_MH_SD)
    Observable<JsonObject> seeMhSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MH_HOT_TAG)
    Observable<JsonObject> mhHotTag(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ADD_MH_SD)
    Observable<JsonObject> addMhSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MY_LIKE_DJ)
    Observable<JsonObject> myLikeDj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MY_MSG)
    Observable<JsonObject> myMsg(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.UPLOAD_PHOTO)
    Call<NetImgMainBean> uploadPhoto(@Body RequestBody requestBody);

    @POST(ApiUrl.USER_YJFK)
    Observable<JsonObject> userYjfk(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.SC_MH_SD)
    Observable<JsonObject> scMhSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.QX_SC_MH_SD)
    Observable<JsonObject> qxScMhSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DZ_MH_SD)
    Observable<JsonObject> dzMhSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.QX_DZ_MH_SD)
    Observable<JsonObject> qxDzMhSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MY_SC_MH_SD)
    Observable<JsonObject> myScMhSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MH_SD_DETAIL)
    Observable<JsonObject> mhSdDetail(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ADD_MH_TO_SD)
    Observable<JsonObject> addMhToSd(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.DEL_SD_MH)
    Observable<JsonObject> delSdMh(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.XG_USER_INFO)
    Observable<JsonObject> xgUserInfo(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.QB_DSY_MX)
    Observable<JsonObject> qbDsyMx();

    @POST(ApiUrl.MH_SD_GC)
    Observable<JsonObject> mhSdGc(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.MH_EJ_FL)
    Observable<JsonObject> mhEjFl(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ZT_JL)
    Observable<JsonObject> ztJl(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.TC_LOGIN)
    Observable<JsonObject> tcLogin();

    @POST(ApiUrl.ZX_ZH)
    Observable<JsonObject> zxZh();

    @POST(ApiUrl.MH_CN_LIKE)
    Observable<JsonObject> mhCnLike(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.TX)
    Observable<JsonObject> tx(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.ALI_PAY_SQ)
    Observable<JsonObject> aliPaySq(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.GET_NEW_VERSION)
    Observable<JsonObject> getNewVersion();

    @POST(ApiUrl.GET_SEE_AD_COUNT)
    Observable<JsonObject> getSeeAdCount();

    @POST(ApiUrl.GET_BOOK_AD_JL)
    Observable<JsonObject> getBookAdJl();

    @POST(ApiUrl.GET_MH_AD_JL)
    Observable<JsonObject> getMhAdJl();

    @POST(ApiUrl.DJ_AD_JS_DJ)
    Observable<JsonObject> djAdJsDj(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.JT_JL)
    Observable<JsonObject> jtJl();

    @POST(ApiUrl.ALL_SEE_AD_DY)
    Observable<JsonObject> allSeeAdDy(@QueryMap Map<String, Object> params);

    @POST(ApiUrl.SEND_YZM)
    Observable<JsonObject> sendYzm(@QueryMap Map<String, Object> params);
}